#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author： 青城子
# datetime： 2021/8/30 20:49 
# ide： PyCharm

import execjs


class WeChat:

    def __init__(self, password="123456", exe_function="getPwd"):
        """
         微信公众号登录密码默认赋值123456，调用时根据自己登录密码值传入
         默认wechat.js中的执行函数名getPwd，如果wechat.jsz中函数名不是getPwd，传入具体函数名即可
        :param password: 默认微信公众号登录密码
        :param exe_function: wechat.js中的入口函数
        """

        self.password = password
        self.exe_function = exe_function
        # 1、实例化一个node对象
        self.node = execjs.get()

    def reverse_engineer(self):
        # 2.js源文件编译
        ctx = self.node.compile(open("../static/wechat.js", encoding="utf-8").read())
        # 3.执行js函数
        func_name = "{0}('{1}')".format(self.exe_function, self.password)  # getPwd()是在wechat.js中定义的加密函数，传入需要加密的参数
        pwd = ctx.eval(func_name)  # 执行获取加密后的pwd
        return pwd


if __name__ == '__main__':
    obj = WeChat()
    rest = obj.reverse_engineer()
    print(rest)
